/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sockets.exemplos;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author andersonribeiro
 */
public class JavaServer {

    public static void main(String[] args) {

        int porta = 9999;

        try {
            //Servidor usa esta classe para escutar uma porta de rede 
            //da máquina a espera de requisições de conexão.
            ServerSocket s = new ServerSocket(porta);
            String str;
            while (true) {
                //Tendo o socket sido criado, o servidor espera um pedido de conexão
                //acept - Bloqueia a aplicação, até que chegue a conexão
                Socket c = s.accept();
                System.out.println("Java server accepting connections");
                String remoteHost = (c.getInetAddress()).toString();
                int remotePort = c.getPort();
                System.out.print("Client ");
                System.out.print(remoteHost);
                System.out.print(" connected. Port ");
                System.out.println(remotePort);

                //InputStream i = c.getInputStream();
                //OutputStream o = c.getOutputStream();

                DataInputStream i1 = new DataInputStream(c.getInputStream());
                DataOutputStream o1 = new DataOutputStream(c.getOutputStream());

                do {
                    byte[] line = new byte[100];
                    //i.read(line);
                    //o.write(line);
                    i1.read(line);
                    o1.write(line);
                    str = new String(line);
                    System.out.print("Client said: ");
                    System.out.println(str);
                } while (!str.trim().equals("bye"));
                
                c.close();
                System.out.println("Client disconnected from Java server!\n");
            }
        } catch (Exception e) {
            System.out.println(e);
        }

    }
}
